﻿#ifndef __AF_SYSINCDEF_LINUX_H__
#define __AF_SYSINCDEF_LINUX_H__

#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
#include <memory.h>
#include <iostream>
#include <fstream>

#include <string>
#include <vector>
#include <map>

// 类型
#define _STRING			std::string
#define _VECTOR			std::vector
#define _MAP			std::map

// 数据流
#define _FSTREAM		std::fstream
#define _IFSTREAM		std::ifstream
#define _OFSTREAM		std::ofstream

// 控制台输出操作
#define _COUT			std::cout
#define _CIN			std::cin
#define _ENDL			std::endl

// 控制台输出操作
#define _PRINTF			printf
#define _SPRINTF		sprintf
#define _VSNPRINTF		vsnprintf

// 内存操作
#define _MEMSET			memset
#define _MEMCMP			memcmp
#define _MEMCPY			memcpy
#define _MEMMOVE		memmove

// char字符串操作
#define _STRCPY			strcpy
#define _STRCAT			strcat
#define _STRCMP			strcmp
#define _STRLEN			strlen

// 目录操作
#define _FS_KIND_DIR			DT_DIR
#define _FS_KIND_FILE			DT_REG
#define _FS_DIR_ERROR			NULL
#define _FS_DIR				DIR*
#define _FS_DATA			struct dirent*
#define _FS_OPEN(_szPath, _DIR, _DATA)	((NULL == (_DIR = opendir(_szPath)) ? NULL : \
					(NULL == (_DATA = readdir(_DIR)) ? _DIR : _DIR)
#define _FS_READ(_DIR, _DATA)		readdir(_DIR)
#define _FS_CLOSE(_DIR)			closedir(_DIR)

#define _FS_DATA_NAME(_DATA, _strName)	_DATA->d_name
#define _FS_DATA_SIZE(_DATA, _nSize)	_DATA->d_size
#define _FS_DATA_ISKIND(_DATE, _KIND)	((_DATA->d_type == _KIND) ? true : false)


// 可变参数操作
#define	_VA_LIST		va_list
#define _VA_START		va_start
#define _VA_ARG			va_arg
#define _VA_END			va_end

#endif